package ConllctionNofair;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * list 不安全
 *
 */
public class listTest {

    public static void main(String[] args) {
        //        1.用java自带的vctor list线程不安全
        //        List<String> list = new Vector<>();
        //        2.使用集合类实现 集合安全
        //        ArrayList<String> list = new ArrayList<>();
        //        List<String> list1 = Collections.synchronizedList(list);
//        CopyOnWriter  写时复制(读写分离)  在写入或者修改数组资源时只能有一个线程同时进行操作 ,而在读取数组信息可以多个线程同时读取.
//        JDK17 底层使用的是  synchronized (lock)  锁代码一块区域  其实和用lock锁效果一致
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
        for (int i = 0; i < 100; i++) {
            new Thread(()->{
                list.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(list);
            },i+"").start();
        }
    }
}
